package com.yuzhong.common.tree;

import java.util.List;
import java.util.Map;

/** 抽象树
 * @author hdy
 * @version 创建时间：2013-3-8 下午1:53:19
 * 
 */
public abstract class AbstractTree {
	//获取父亲节点
	public abstract AbstractTree getParent();
	//获取所有的孩子
	public abstract List<AbstractTree> getChildren();
	//获得当前节点存储的数据Object
	public abstract Object getNodeData();
	//是否是叶子
	public abstract boolean isLeaf() ;
	//设置父亲节点
	public abstract void setParent(AbstractTree parent) ;
	//设置孩子
	public abstract void setChildren(List<AbstractTree> children) ;
	//设置节点存储的dto
	public abstract void setNodeData(Object node) ;
	//叶子
//	public abstract void setLeaf(boolean isLeaf);
	//遍历树并且存储在depthMap中 按层遍历
	public abstract void iteratorTree(Map<Integer,List<Object>> depthMap);
	//添加孩子节点
	public abstract TreeNode addChildNode(AbstractTree node);
	//获取深度 此树会自动填充层
	public abstract int getDepth();
	//设置深度
	public abstract void setDepth(int depth);
}
